/**  
 * Copyright (c) 2010 University of Pennsylvania.
 *     All rights reserved.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing,
 *  software distributed under the License is distributed on an "AS
 *  IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 *  express or implied.  See the License for the specific language
 *  governing permissions and limitations under the License.
 *
 */
 
#define MAX_PAGELEN 50
#define MAX_TUPLELEN 16
#define MAX_TUPLES   16

typedef struct {
  uint8_t page_len, tuple_count;
  uint8_t page[MAX_PAGELEN];
} PACKING_MACRO PAGE;

void page_init(PAGE *p);
uint8_t page_addtuple(PAGE *p, uint8_t tuple_len, uint16_t *tuple);
uint8_t page_deletetuple(PAGE *p, uint8_t tuple_index);
uint8_t page_gettuple(PAGE *p, uint8_t tuple_index, uint8_t *tuple_len, uint16_t *tuple);

void marshal_page(uint8_t **pos, PAGE *p);
void unmarshal_page(uint8_t **pos, PAGE *p, ADDRESS source_node);





